import { resources, TextAsset } from "cc";

export default class Ab_Config_bA {
	private static Ab_coun_code_bA: string;
	private static Ab_lang_code_BA: string;
	private static Ab_country_conf_bA: Ab_CountryConfig_bA;
	private static Ab_official_conf_bA: Ab_OfficialConfig_bA;
	private static Ab_task_round_bA: Array<Ab_TaskRound_bA>;
	private static Ab_task_remove_bA: Array<Ab_TaskRemove_bA>;

	/** 当前的国家代码 */
	public static get Ab_country_bA(){
		return Ab_Config_bA.Ab_coun_code_bA;
	}
	/** 当前的语言代码 */
	public static get Ab_language_bA(){
		return Ab_Config_bA.Ab_lang_code_BA;
	}
	/** 当前的国家配置 */
	public static get Ab_countryConf_bA(){
		return Ab_Config_bA.Ab_country_conf_bA;
	}
	/** 当前的商业化配置 */
	public static get Ab_officialConf_bA(){
		return Ab_Config_bA.Ab_official_conf_bA;
	}
	/** 当前的任务配置 */
	public static get Ab_taskRound_bA(){
		return Ab_Config_bA.Ab_task_round_bA;
	}
	/** 当前的任务配置 */
	public static get Ab_taskRemove_bA(){
		return Ab_Config_bA.Ab_task_remove_bA;
	}

	public static async Ab_init_bA(country: string){
		if(typeof country != 'string') country = Ab_country_code_list_bA[country];
		if(!Ab_country_code_list_bA.includes(country)) country = Ab_country_code_list_bA[20]; // 默认国家代码
		Ab_Config_bA.Ab_coun_code_bA = country;

		Ab_Config_bA.Ab_country_conf_bA = await abi.Ab_cc_bA.Ab_loadResAsync_bA('config/country', TextAsset, resources)
		.then(res=>{
			let list: Array<Ab_CountryConfig_bA> = abi.Ab_parseJson_bA(res.text.Ab_decodeAtoB_bA);
			return list.find(e=>e.country==country);
		});
		Ab_Config_bA.Ab_lang_code_BA = Ab_Config_bA.Ab_country_conf_bA.language;
		Ab_Config_bA.Ab_official_conf_bA = await abi.Ab_cc_bA.Ab_loadResAsync_bA('config/official', TextAsset, resources)
		.then(res=>{
			let list: Array<Ab_OfficialConfig_bA> = abi.Ab_parseJson_bA(res.text.Ab_decodeAtoB_bA);
			return list.find(e=>e.country==country);
		});
		Ab_Config_bA.Ab_task_round_bA = await abi.Ab_cc_bA.Ab_loadResAsync_bA('config/task-round', TextAsset, resources)
		.then(res=>{
			let list: Array<Ab_TaskRound_bA> = abi.Ab_parseJson_bA(res.text.Ab_decodeAtoB_bA);
			return list;
		});
		Ab_Config_bA.Ab_task_remove_bA = await abi.Ab_cc_bA.Ab_loadResAsync_bA('config/task-remove', TextAsset, resources)
		.then(res=>{
			let list: Array<Ab_TaskRemove_bA> = abi.Ab_parseJson_bA(res.text.Ab_decodeAtoB_bA);
			return list;
		});
	}

	/**
	 * 格式化货币
	 * @param symbol
	 */
	public static Ab_symbolString_bA(symbol: number){
		let deco = ['.', ',', ' '];
		symbol = abi.Ab_number_bA.Ab_fixedNum_bA(symbol, Ab_Config_bA.Ab_countryConf_bA.round ? 0 : 2, true);
		let [str, DPart] = symbol.toString().split('.');
		if(Ab_Config_bA.Ab_CountryIs_bA(10) && str.length>3){
			str = [str.slice(0, str.length-3).replace(/\B(?=(\d{2})+(?!\d))/g, deco[Ab_Config_bA.Ab_countryConf_bA.thousand-1]), str.slice(str.length-3)].join(deco[Ab_Config_bA.Ab_countryConf_bA.thousand-1]);
		}else{
			str = str.replace(/\B(?=(\d{3})+(?!\d))/g, deco[Ab_Config_bA.Ab_countryConf_bA.thousand-1]);
		}
		if(DPart) str = [str, DPart].join(deco[Ab_Config_bA.Ab_countryConf_bA.point-1]);
		str = (Ab_Config_bA.Ab_countryConf_bA.front ? [Ab_Config_bA.Ab_countryConf_bA.symbol, str] : [str, Ab_Config_bA.Ab_countryConf_bA.symbol]).join(' ');

		return str;
	}

	public static Ab_CountryIs_bA(code: number){
		return Ab_Config_bA.Ab_country_bA == Ab_country_code_list_bA[code];
	}
}

// Country code list
// AR: 0
// AU: 1
// BR: 2
// CA: 3
// CL: 4
// CO: 5
// DE: 6
// FR: 7
// GB: 8
// ID: 9
// IN: 10
// JP: 11
// KR: 12
// KZ: 13
// MX: 14
// NG: 15
// NZ: 16
// RU: 17
// TH: 18
// TR: 19
// US: 20
// VN: 21
// ZA: 22
/** 有效国家代码列表 */
const Ab_country_code_list_bA = [ "QVI=", "QVU=", "QlI=", "Q0E=", "Q0w=", "Q08=", "REU=", "RlI=", "R0I=", "SUQ=", "SU4=", "SlA=", "S1I=", "S1o=", "TVg=", "Tkc=", "Tlo=", "UlU=", "VEg=", "VFI=", "VVM=", "Vk4=", "WkE=" ].map(el=>el.Ab_decodeAtoB_bA);

/** 国家配置 */
export type Ab_CountryConfig_bA = {
	/** 国家名称 */
	"coun-name": string,
	/** 国家代码 */
	"country": string,
	/** 语言名称 */
	"lang-name": string,
	/** 语言代码 */
	"language": string,
	/** 货币名称 */
	"symbol-name": string,
	/** 货币符号 */
	"symbol": string,
	/** 银行列表 */
	"channel": Array<string>,
	/** 货币格式化配置-去整 */
	"round": boolean,
	/** 货币格式化配置-符号前置 */
	"front": boolean,
	/** 货币格式化配置-分隔符 */
	"thousand": number,
	/** 货币格式化配置-小数点 */
	"point": number
};

/** 国家商业化配置 */
export type Ab_OfficialConfig_bA = {
	/** 国家代码 */
	"country": string,
	/** 排行榜累积提现系数下限 */
	"rank_a": number,
	/** 排行榜累积提现系数上线 */
	"rank_b": number,
	/** 提现弹幕第1关提现 */
	"live1": number,
	/** 提现弹幕第2关提现 */
	"live2": number,
	/** 提现弹幕第3关提现 */
	"live3": number,
	/** 提现弹幕第4关提现下限 */
	"live4_a": number,
	/** 提现弹幕第4关提现上线 */
	"live4_b": number,
	/** 第1关单次合成奖励 */
	"fusion1": number,
	/** 第2关单次合成奖励 */
	"fusion2": number,
	/** 第3关单次合成奖励 */
	"fusion3": number,
	/** 第4关单次合成奖励 */
	"fusion4": number,
	/** 复活统计第1关平均提现 */
	"statistics1": number,
	/** 复活统计第2关平均提现 */
	"statistics2": number,
	/** 复活统计第3关平均提现 */
	"statistics3": number,
	/** 复活统计第4关平均提现下限 */
	"statistics4_a": number,
	/** 复活统计第4关平均提现上线 */
	"statistics4_b": number,
	/** 特殊奖励 */
	"special_fruit": number
}

export type Ab_TaskRound_bA = {
	round: number,
	hard: boolean,
	diamond: number,
}

export type Ab_TaskRemove_bA = {
	id: number,
	count: number,
	diamond: number,
}